package org.testmyapp.engine;

import java.util.List;
import java.util.Map;

import org.activiti.engine.IdentityService;
import org.activiti.engine.form.FormProperty;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.task.Task;
import org.testmyapp.persistence.BusinessObjectMarker;

public interface IEngineServices {

	public abstract List<ProcessDefinition> getAvailableProcess();

	public abstract boolean startProcessForUserByKey(String userId,
			String processKey);

	public abstract List<Task> getTasksForCurrentUser(String userId);

	public abstract Task getTaskById(String taskId);

	public abstract List<FormProperty> getFormPropertiesForTask(Task taskById);

	public abstract String getProcessDefinitionKeyForTaskDefKey(
			String processDefinitionId);

	public abstract BusinessObjectMarker getValueOfVariable(FormProperty fp,
			String processInstanceId);

	public abstract Object getVariable(String var, String processInstanceId);

	public abstract void addBusinessRelevantProcessVarToProcess(String pid,
			String value);

	public abstract void setVariable(String pid, String varName, Object object);

	public abstract void completeTask(String taskId);
	
	public abstract List<String> completeUserTaskWithSucessorDetermination(Task task);

	public abstract IdentityService getIdentityService();
	
	Map<String, Object> getProcVariables(String procIns);

}